/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.fyx.secure.ejb;

import java.util.List;
import org.fyx.secure.entity.SecureRole;
import org.fyx.secure.entity.SecureUser;

/**
 *
 * @author xljan
 */
interface Secure {

    /**
     * Prida noveho uzivatele do systemu.
     * @param su novy uzivatel
     */
    void addUser(SecureUser su);

    /**
     * Odstrani uzivatele ze systemu.
     * @param su uzivatel
     */
    void deleteUser(SecureUser su);

    /**
     * Najde a vrati uzivatele dle zvoleneho IdUser. Pokud neni uzivatel
     * nalezen vrati null.
     * @param idUser id uzivatele
     * @return uzivatele
     */
    SecureUser getUserById(int idUser);

    /**
     * Vrati seznam vsech uzivatelu v systemu.
     * 
     * @return 
     */
    List<SecureUser> getUsers();

    /**
     * Vrati true pokud existuje email v systemu.
     * 
     * @param email testovany email
     * @return email jiz v systemu existuje
     */
    boolean emailExists(String email);

    /**
     * Vrati pocet uzivatelu systemu.
     * @return 
     */
    int getCountUsers();
    
    /**
     * Prida uzivatelskou roli do systemu.
     * @param role 
     */
    void addRole(SecureRole role);
    
    /**
     * Odhlasi aktualne prihlaseneho uzivatele ze systemu.
     * Odstrani jej z FyxContext a jeho prava take.
     */
    void logout();
    
}
 